// 导入封装后的axios实例（用于发送请求）
import request from '@/utils/request';
// 导入当前模块所需的类型（约束请求参数和响应数据）
import type { loginForm, loginResponseData, userResponseData } from './type';

/**
 * 接口地址枚举
 * 作用：集中管理接口URL，避免硬编码，便于后期修改
 */
enum API {
  LOGIN_URL = '/user/login', // 登录接口地址
  USERINFO_URL = '/user/info', // 获取用户信息接口地址
}

/**
 * 登录请求函数
 * @param data - 登录表单数据（符合loginForm类型）
 * @returns Promise - 响应数据为loginResponseData类型
 */
export const reqLogin = (data: loginForm) => {
  // 调用post请求：泛型参数<请求参数类型, 响应数据类型>

  return request.post<any, loginResponseData>(API.LOGIN_URL, data);
};

/**
 * 获取用户信息请求函数
 * @returns Promise - 响应数据为userResponseData类型
 */
export const reqUserInfo = () => {
  // 调用get请求：泛型参数<请求参数类型（无参数时用any）, 响应数据类型>

  return request.get<any, userResponseData>(API.USERINFO_URL);
};
